package com.zking.frame.lsx;

import java.awt.BorderLayout;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;
import javax.swing.border.BevelBorder;

import com.zking.frame.czp.ARAP_Jf;
import com.zking.frame.dhy.BookSearch;
import com.zking.frame.dhy.BooksData;
import com.zking.frame.dhy.DaySave;
import com.zking.frame.zc.MemberQuery;
import com.zking.frame.zc.MyFrame;
import com.zking.frame.zc.SellJFrame;

public class MainSwing {
	private JFrame frame;// 面板

	// 北部面板 North
	private JPanel pl_north;

	// 西部面板 West
	private JPanel pl_west;
	private JButton bt_sales;// 销售管理标签
	private JButton bt_basicMsg;// 基本资料标签
	private JButton bt_commonFunction;// 常用功能标签
	private JButton bt_dailyRetail;// 日常零售
	private JButton bt_wholeSale; // 批发销售
	private JButton bt_storageManagement;// 入库管理
	private JButton bt_searchBook;// 图书查询
	private JButton bt_vipManagement;// 会员管理
	private JButton bt_customerMsg;// 客户资料
	private JButton bt_bookMsg;// 图书资料
	private JButton bt_pay;// 应支应付
	private List<List<JPanel>> lists;// 面板list集合
	private final int sJNums = 0;// 销售管理的list下标 ->salesJpanelNums
	private final int bMJNums = 1;// 基本资料的list下标->basicMsgJpanelNums
	private final int cFJNums = 2;// 常用功能的list下标->commonFunctionJpanelNums
	// 中部面板 center 有两部分组成
	private JPanel pl_center;
	// 中部分为中中部
	private JPanel pl_center_center;
	// 中部中下部
	private JPanel pl_center_south;
	private JLabel lb_name;// 店名
	private JLabel lb_me;// 操作员
	private JLabel lb_Data;// 日期
	private JTextArea ta_1;// 最下部面板的文字区
	private JTextArea ta_2;
	private JTextArea ta_3;

	// 获取屏幕的宽
	public int getScreenWidth() {
		Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
		int screenWidth = screen.width;
		return screenWidth;
	}

	// 获取屏幕的长
	public int getScreenLength() {
		Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
		int screenLength = screen.height;
		return screenLength;
	}

	public MainSwing() {
		frame = new JFrame("书本销售系统");
		frame.setLayout(new BorderLayout());// 边界布局
		frame.setIconImage(Toolkit.getDefaultToolkit().createImage(
				MainSwing.class.getResource("左上角小图标.png")));// 更改图标

		// 上部面板-->添加背景照片
		pl_north = new JPanel() {
			private static final long serialVersionUID = 1L;

			@Override
			public void paint(Graphics g) {
				g.drawImage(setImage("头条界面.png"), 0, 0, this);
				super.paintComponents(g);
			}
		};
		pl_north.setLayout(new BorderLayout());
		pl_north.setPreferredSize(new Dimension(0, 72));
		frame.add(pl_north, "North");

		// 左部面板
		JPanel pl = new JPanel(new FlowLayout());// 流布局
		pl.setPreferredSize(new Dimension(120, 700));// 设置大小
		Color backGround = new Color(148, 174, 198);// red green blue 红绿蓝
		pl.setBackground(backGround);// 设置面板颜色
		frame.add(pl, "West");// 添加到主面板左侧
		pl_west = new JPanel();
		pl.add(pl_west);// 左侧面板添加组件
		pl_west.setLayout(new GridBagLayout());// 组件为一个网格布局面板
		pl_west.setBackground(backGround);// 设置里边面板颜色
		GridBagConstraints gbc = new GridBagConstraints();// 设置行列，组件的大小和宽度
		gbc.insets = new Insets(0, 0, 10, 0);// (top,left,bottom,right)
												// bottom=10上下间距为10
		// 销售管理
		bt_sales = new JButton("销售管理");
		Color bt_backGround = new Color(74, 101, 132);// 前三个按钮的色彩配置
		bt_sales.addActionListener(e -> {
			for (int i = 0; i < lists.size(); i++) {
				List<JPanel> temp = lists.get(i);
				for (int j = 0; j < temp.size(); j++) {
					if (i == 0) {
						temp.get(j).setVisible(true);// 设置可见
						System.out.println("true");
					} else {
						temp.get(j).setVisible(false);// 设置不可见
					}
				}
			}
		});

		bt_sales.setFont(new Font("楷体", Font.BOLD, 18));// 设置字体
		bt_sales.setForeground(Color.WHITE);// 设置字体颜色为白色
		bt_sales.setOpaque(true);//
		bt_sales.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));// 设置边框
		bt_sales.setPreferredSize(new Dimension(120, 35));// 设置按钮大小
		bt_sales.setBackground(bt_backGround);// 按钮颜色设置
		gbc.gridx = 0;// 这是代表第几列，0代表第一列
		gbc.gridy = 0;// 这是代表第几行，0代表第一行
		pl_west.add(bt_sales, gbc);// 添加工具栏标签（lb_txt0） ->绝对布局面板上（pl_west_null0）
		// 鼠标移动监听
		bt_sales.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseEntered(MouseEvent e) {
				bt_sales.setBackground(backGround);
			}

			@Override
			public void mouseExited(MouseEvent e) {
				bt_sales.setBackground(bt_backGround);
			}
		});
		// 基本资料
		bt_basicMsg = new JButton("基本资料");
		bt_basicMsg.addActionListener(e -> {
			for (int i = 0; i < lists.size(); i++) {
				for (int j = 0; j < lists.get(i).size(); j++) {
					if (i == 1) {
						lists.get(i).get(j).setVisible(true);// 设置可见
			        } else {
				        lists.get(i).get(j).setVisible(false);// 设置不可见
			        }
				}
			}
        });

		bt_basicMsg.setFont(new Font("楷体", Font.BOLD, 18));
		bt_basicMsg.setBackground(bt_backGround);// 按钮颜色设置
		bt_basicMsg.setForeground(Color.WHITE);// 设置字体颜色为白色
		bt_basicMsg.setPreferredSize(new Dimension(120, 35));// 设置按钮大小
		bt_basicMsg.setBorder(BorderFactory
				.createBevelBorder(BevelBorder.LOWERED));// 设置边框
		gbc.gridx = 0;// 这是代表第几列，0代表第一列
		gbc.gridy = 1;// 这是代表第几行，0代表第一行
		pl_west.add(bt_basicMsg, gbc);// 添加工具栏标签（lb_txt0）
										// ->绝对布局面板上（pl_west_null0）
		// 鼠标移动监听
		bt_basicMsg.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseEntered(MouseEvent e) {
				bt_basicMsg.setBackground(backGround);
			}

			@Override
			public void mouseExited(MouseEvent e) {
				bt_basicMsg.setBackground(bt_backGround);
			}
		});
		// 常用功能
		bt_commonFunction = new JButton("常用功能");
		bt_commonFunction.addActionListener(e -> {
			for (int i = 0; i < lists.size(); i++) {
				for (int j = 0; j < lists.get(i).size(); j++) {
					if (i == 2) {
						lists.get(i).get(j).setVisible(true);// 设置可见
					} else {
						lists.get(i).get(j).setVisible(false);// 设置不可见
					}
				}
			}
		});

		bt_commonFunction.setFont(new Font("楷体", Font.BOLD, 18));
		bt_commonFunction.setBackground(bt_backGround);// 按钮颜色设置
		bt_commonFunction.setForeground(Color.WHITE);// 设置字体颜色为白色
		bt_commonFunction.setPreferredSize(new Dimension(120, 35));// 设置按钮大小
		bt_commonFunction.setBorder(BorderFactory
				.createBevelBorder(BevelBorder.LOWERED));// 设置边框
		gbc.gridx = 0;// 这是代表第几列，0代表第一列
		gbc.gridy = 2;// 这是代表第几行，0代表第一行
		pl_west.add(bt_commonFunction, gbc);// 添加工具栏标签（lb_txt0）
											// ->绝对布局面板上（pl_west_null0）
		// 鼠标移动监听
		bt_commonFunction.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseEntered(MouseEvent e) {
				bt_commonFunction.setBackground(backGround);
			}

			@Override
			public void mouseExited(MouseEvent e) {
				bt_commonFunction.setBackground(bt_backGround);
			}
		});

		// list集合装载所有的Jbutton按钮
		lists = new ArrayList<List<JPanel>>();
		List<JPanel> listBt1 = new ArrayList<JPanel>();// 销售管理的所有功能添加到小list集合中
		List<JPanel> listBt2 = new ArrayList<JPanel>();// 基本资料的所有功能添加到小list集合中
		List<JPanel> listBt3 = new ArrayList<JPanel>();// 常用的所有功能添加到小list集合中
		lists.add(listBt1);// 添加到大list集合
		lists.add(listBt2);
		lists.add(listBt3);
		// 日常零售
		bt_dailyRetail = new JButton();
		bt_dailyRetail.setIcon(setImageIcon("日常零售.png"));
		setJbutton(bt_dailyRetail);
		gbc.gridx = 0;// 1列
		gbc.gridy = 3;// 1行
		// sJNums 加入的是销售管理list集合中
		addMouseMove(gbc, bt_dailyRetail, sJNums);// 鼠标移动触发事件（改变图标底色）方法里没有list添加
		bt_dailyRetail.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				new DaySave();
			}
		});
		// 批发销售
		bt_wholeSale = new JButton();
		bt_wholeSale.setIcon(setImageIcon("批发销售.png"));
		setJbutton(bt_wholeSale);
		gbc.gridwidth = 0;// 这列已经完了，如果还要添加就写1
		gbc.gridx = 0;// 1列
		gbc.gridy = 4;// 2行
		addMouseMove(gbc, bt_wholeSale, sJNums);
		bt_wholeSale.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				new SellJFrame(frame, true);
			}
		});
		// 入库管理
		bt_storageManagement = new JButton();
		bt_storageManagement.setIcon(setImageIcon("入库管理.png"));
		setJbutton(bt_storageManagement);
		gbc.gridwidth = 0;// 这列已经完了，如果还要添加就写1
		gbc.gridx = 0;// 1列
		gbc.gridy = 5;// 3行
		addMouseMove(gbc, bt_storageManagement, sJNums);
		bt_storageManagement.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				new MyFrame(frame, true);
			}
		});
		// 图书查询
		bt_searchBook = new JButton();
		bt_searchBook.setIcon(setImageIcon("图书查询.png"));
		setJbutton(bt_searchBook);
		gbc.gridwidth = 0;// 这列已经完了，如果还要添加就写1
		gbc.gridx = 0;// 1列
		gbc.gridy = 6;
		addMouseMove(gbc, bt_searchBook, sJNums);
		bt_searchBook.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				new BookSearch(false, null,true);
			}
		});
		// 会员管理
		bt_vipManagement = new JButton();
		bt_vipManagement.setIcon(setImageIcon("会员管理.png"));
		setJbutton(bt_vipManagement);
		gbc.gridwidth = 0;// 这列已经完了，如果还要添加就写1
		gbc.gridx = 0;// 1列
		gbc.gridy = 7;
		addMouseMove(gbc, bt_vipManagement, sJNums);
		bt_vipManagement.addActionListener(e -> {
			new MemberQuery(frame, true);
		});
		// 客户资料
		bt_customerMsg = new JButton();
		bt_customerMsg.setIcon(setImageIcon("客户资料.png"));
		setJbutton(bt_customerMsg);
		gbc.gridwidth = 0;// 这列已经完了，如果还要添加就写1
		gbc.gridx = 0;// 1列
		gbc.gridy = 8;
		addMouseMove(gbc, bt_customerMsg, bMJNums);
		// 监听：点击后打开子面板
		bt_customerMsg.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				new CustomerMsg(frame, true);
			}
		});
		// 图书资料
		bt_bookMsg = new JButton();
		bt_bookMsg.setIcon(setImageIcon("图书资料.png"));
		setJbutton(bt_bookMsg);
		gbc.gridwidth = 0;// 这列已经完了，如果还要添加就写1
		gbc.gridx = 0;// 1列
		gbc.gridy = 9;
		addMouseMove(gbc, bt_bookMsg, bMJNums);
		bt_bookMsg.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				new BooksData();
			}
		});
		// 应收应付
		bt_pay = new JButton();
		bt_pay.setIcon(setImageIcon("应收应付.png"));
		setJbutton(bt_pay);
		gbc.gridwidth = 0;// 这列已经完了，如果还要添加就写1
		gbc.gridx = 0;// 1列
		gbc.gridy = 10;
		addMouseMove(gbc, bt_pay, cFJNums);
		bt_pay.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				new ARAP_Jf();
			}
		});

		// 中部面板
		pl_center = new JPanel(new BorderLayout());
		frame.add(pl_center, "Center");

		// 中中部面板
		pl_center_center = new JPanel();
		pl_center_center.setLayout(new BorderLayout());
		Color color = new Color(222, 231, 239);// 中部面板背景颜色调配
		pl_center_center.setBackground(color);// 设置中部面板色彩
		pl_center.add(pl_center_center, "Center");

		// 中下部面板-->设置面板
		Color color_bottom = new Color(185, 204, 217);
		pl_center_south = new JPanel();
		pl_center_south.setLayout(new FlowLayout());// 中下部面板 流布局
		pl_center_south.setBackground(color_bottom);// 背景颜色
		lb_name = new JLabel("店名：");
		lb_name.setFont(new Font("楷书", Font.BOLD, 18));
		lb_name.setPreferredSize(new Dimension(90, 22));

		ta_1 = new JTextArea("解忧杂货店");
		ta_1.setFont(new Font("楷书", Font.BOLD, 18));
		ta_1.setOpaque(false);// 透明
		ta_1.setPreferredSize(new Dimension(400, 22));

		lb_me = new JLabel("操作员:");
		lb_me.setFont(new Font("楷书", Font.BOLD, 18));
		lb_me.setPreferredSize(new Dimension(100, 22));
		ta_2 = new JTextArea("廖述幸");
		ta_2.setFont(new Font("楷书", Font.PLAIN, 18));
		ta_2.setOpaque(false);// 透明
		ta_2.setPreferredSize(new Dimension(450, 22));

		lb_Data = new JLabel("今天是：");
		lb_Data.setSize(50, 20);
		lb_Data.setFont(new Font("华文楷体", Font.BOLD, 18));
		// 启动时间获取方法getDate(); 获取当前星期几getWeekfDate();
		ta_3 = new JTextArea(getDate() + " " + getWeekOfDate());
		ta_3.setFont(new Font("华文楷体", Font.BOLD, 18));
		ta_3.setBackground(null);

		pl_center_south.add(lb_name);
		pl_center_south.add(ta_1);
		pl_center_south.add(lb_me);
		pl_center_south.add(ta_2);
		pl_center_south.add(lb_Data);
		pl_center_south.add(ta_3);
		pl_center.add(pl_center_south, "South");

		frame.setVisible(true);// 可见
		frame.setSize(getScreenWidth() - 400, getScreenLength() - 150);// 大小
		frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);// 窗口可关闭
		frame.setLocationRelativeTo(null);// 窗口居中
	}

	// 设置图片方法1
	public Image setImage(String pngName) {
		Image img = new ImageIcon(MainSwing.class.getResource(pngName))
				.getImage();
		return img;
	}

	// 设置图片方法2
	public ImageIcon setImageIcon(String pngName) {
		ImageIcon img = new ImageIcon(MainSwing.class.getResource(pngName));
		return img;
	}

	// 按钮样式设置方法
	public void setJbutton(JButton bt) {
		// 设置透明(可更改颜色）
		bt.setOpaque(false);
		// 去掉背景点击效果
		bt.setContentAreaFilled(false);
		// 去掉聚焦线
		bt.setFocusPainted(false);
		// 去掉边框
		bt.setBorder(null);
	}

	/**
	 * @param 获取年月日
	 * @return 年月日
	 */
	public String getDate() {
		// 1.格式化
		SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日");// 设置日期格式
		String time = df.format(new Date());// new Date()为获取当前系统时间
		return time;
	}

	/**
	 * @param获取星期几
	 * @return 星期几
	 */
	public String getWeekOfDate() {
		Date date = new Date();
		String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
		if (w < 0)
			w = 0;
		return weekDays[w];
	}

	// 超级鼠标移动监听事件
	public void addMouseMove(GridBagConstraints gbc, JButton bt, int index) {
		// int index 如果是0/salesJpanelNums 则添加到集合list(0)-->list<list<Jpanel>>
		// lists
		JPanel pl1 = new JPanel(new FlowLayout());// 1.设计一个布局
		pl1.setPreferredSize(new Dimension(80, 90));// 设置他的大小
		pl1.add(bt);// 2.将按钮放入流布局中
		pl1.setOpaque(false);// 3.设置流布局面板的透明
		pl_west.add(pl1, gbc);// 4.将流布局面板添加到 pl_west网格布局中
		bt.addMouseListener(new MouseAdapter() {// 5.启动鼠标移动变换背景事件
			@Override
			public void mouseEntered(MouseEvent e) {
				pl1.setOpaque(true);
			}

			@Override
			public void mouseExited(MouseEvent e) {
				pl1.setOpaque(false);
			}
		});
		lists.get(index).add(pl1);// 6.将这个面板添加带下标为
									// index的list集合中（list集合已经添加到一个大的list集合中了）
		if (index != 0) {
			pl1.setVisible(false);// 7.设置面板不可见
		}
	}

	public static void main(String[] args) {
		new MainSwing();
	}

}
